package vip.liux.contracts.security.core.extensions;


/**
 * 提供用于存储用户电话号码的抽象接口。
 *
 * @param <TUser> 封装用户的类型。
 */
public interface IUserPhoneNumberStore<TUser> extends IUserStore<TUser> {
    /**
     * 设置指定用户的电话号码。
     *
     * @param user        要设置的用户。
     * @param phoneNumber 电话号码。
     */
    void setPhoneNumber(TUser user, String phoneNumber);

    /**
     * 获取指定用户的电话号码。
     *
     * @param user 要查询的用户。
     * @return 电话号码，若无则为 Optional.empty()。
     */
    String getPhoneNumber(TUser user);

    /**
     * 获取指定用户的电话号码是否已确认。
     *
     * @param user 要查询的用户。
     * @return 如果已确认返回 true，否则返回 false。
     */
    boolean getPhoneNumberConfirmed(TUser user);

    /**
     * 设置指定用户的电话号码确认状态。
     *
     * @param user      要设置的用户。
     * @param confirmed 是否已确认。
     */
    void setPhoneNumberConfirmed(TUser user, boolean confirmed);
}